﻿declare @IDFormula int
declare @IDComposizione int
declare @IDColore int
declare @DescrizioneFormula varchar(150)
declare @IDColoreRotturaChiave VARCHAR(50)

update gp.composizionecolori set idformula = null
delete gp.formule
DBCC CHECKIDENT ('gp.formule', RESEED, 0)

DECLARE db_cursor CURSOR FOR
  select IDComposizione, IDColore from GP.ComposizioneColori order by IDColore

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @IDComposizione, @IDColore

set @IDColoreRotturaChiave = @IDColore
SET @DescrizioneFormula = 'Formula per Colore ID ' + CAST(@IDColore As VARCHAR(20))

insert into gp.Formule (Descrizione) values (@DescrizioneFormula)
SELECT @IDFormula = @@IDENTITY
  
WHILE @@FETCH_STATUS = 0  
BEGIN 

  SET @DescrizioneFormula = 'Formula per Colore ID ' + CAST(@IDColore As VARCHAR(20))
  
  IF @IDColoreRotturaChiave = @IDColore
    BEGIN
      UPDATE GP.ComposizioneColori
	  SET GP.ComposizioneColori.IDFormula = @IDFormula
	  WHERE GP.ComposizioneColori.IDcomposizione = @IDComposizione
    END
    ELSE
      BEGIN
        insert into gp.Formule (Descrizione) values (@DescrizioneFormula)
        SELECT @IDFormula = @@IDENTITY
        
        UPDATE GP.ComposizioneColori
		SET GP.ComposizioneColori.IDFormula = @IDFormula
		WHERE GP.ComposizioneColori.IDcomposizione = @IDComposizione

		set @IDColoreRotturaChiave = @IDColore
      END
      
  FETCH NEXT FROM db_cursor INTO @IDComposizione, @IDColore
  
END  

CLOSE db_cursor  
DEALLOCATE db_cursor 